package com.flydog.taskManager.service;

import com.flydog.taskManager.dto.PeriodicTaskParam;
import com.flydog.taskManager.entity.PeriodicTask;

import java.util.Calendar;
import java.util.List;
import java.util.Optional;
import java.util.Set;

/**
 * 周期性工作服务
 *
 * @author caoweidong
 * @version 0.0.0
 * @create 2021/6/18 10:27
 */
public interface PeriodicTaskService {
    /**
     * 创建周期性工作
     * @param param 周期性工作数据
     * @return 保存后的周期性工作
     */
    PeriodicTask create(PeriodicTaskParam param);

    /**
     * 获取所有周期性工作的列表
     * @return 所有周期性工作的列表
     */
    List<PeriodicTask> listAll();

    /**
     * 在指定时间刷新周期性任务的状态。
     *
     * @param data 指定时间
     * @return 改变的工作
     */
    List<PeriodicTask> refreshStatus(Calendar data);

    PeriodicTask update(Long id, PeriodicTaskParam param);

    Set<Long> delete(Long[] ids);

   Optional<PeriodicTask>  getItem(Long id);

    PeriodicTask updateCurrentStatus(Long id, int status);

    List<PeriodicTask> listPeriodEndBetween(Calendar begin, Calendar end);
}
